/*
 * Copyright   2000   The Regents of the University of California
 * All Rights Reserved
 * 
 * Permission to use, copy, modify and distribute any part of Simgrid/SG
 * for educational, research and non-profit purposes, without fee, and
 * without a written agreement is hereby granted, provided that the above
 * copyright notice, this paragraph and the following three paragraphs
 * appear in all copies.
 * 
 * Those desiring to incorporate this Simgrid/SG into commercial
 * products or use for commercial purposes should contact the Technology
 * Transfer & Intellectual Property Services, University of California,
 * San Diego, 9500 Gilman Drive, Mail Code 0910, La Jolla, CA 92093-0910,
 * Ph: (858) 534-5815, FAX: (858) 534-7345, E-MAIL:invent@ucsd.edu.
 * 
 * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
 * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
 * INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS Simgrid/SG,
 * EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY
 * OF SUCH DAMAGE.  
 * 
 * THE Simgrid/SG PROVIDED HEREIN IS ON AN "AS IS" BASIS, AND THE
 * UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
 * SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.  THE UNIVERSITY OF
 * CALIFORNIA MAKES NO REPRESENTATIONS AND EXTENDS NO WARRANTIES OF ANY
 * KIND, EITHER IMPLIED OR EXPRESS, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
 * PURPOSE, OR THAT THE USE OF THE Simgrid/SG WILL NOT INFRINGE ANY
 * PATENT, TRADEMARK OR OTHER RIGHTS.
 */

#ifndef SG_MACROS_H
#define SG_MACROS_H

#include "tbx_macros.h"
/* This file contains macro definitions for internal use */

/******************************************/
/* Hash Table Macros                      */
/******************************************/
#define HASH_newTaskList() TBX_HashTable_newList()
#define HASH_freeTaskList(l) TBX_HashTable_freeList(l,NULL)
#define HASH_addTask(l,d) TBX_HashTable_insert(l,d,(int(*)(TBX_HashTable_Content_t))SG_taskHash)
#define HASH_removeTask(l,d) TBX_HashTable_remove(l,d,(int(*)(TBX_HashTable_Content_t))SG_taskHash)
#define HASH_isTaskInList(l,d) TBX_HashTable_isInList(l,d,(int(*)(TBX_HashTable_Content_t))SG_taskHash)
#define HASH_applyToTaskList(l,f) TBX_HashTable_apply(l,(void(*)(TBX_HashTable_Content_t))f)
#define HASH_copyTaskList(l) (SG_TaskList)TBX_HashTable_copyList(l)


#define HASH_newResourceList() TBX_HashTable_newList()
#define HASH_freeResourceList(l) TBX_HashTable_freeList(l,NULL)
#define HASH_addResource(l,d) TBX_HashTable_insert(l,d,(int(*)(TBX_HashTable_Content_t))SG_resourceHash)
#define HASH_removeResource(l,d) TBX_HashTable_remove(l,d,(int(*)(TBX_HashTable_Content_t))SG_resourceHash)
#define HASH_isResourceInList(l,d) TBX_HashTable_isInList(l,d,(int(*)(TBX_HashTable_Content_t))SG_resourceHash)
#define HASH_applyToResourceList(l,f) TBX_HashTable_apply(l,(void(*)(TBX_HashTable_Content_t))f)

#define HASH_newTraceList() TBX_HashTable_newList()
#define HASH_freeTraceList(l) TBX_HashTable_freeList(l,NULL)
#define HASH_addTrace(l,d) TBX_HashTable_insert(l,d,(int(*)(TBX_HashTable_Content_t))SG_traceHash)
#define HASH_removeTrace(l,d) TBX_HashTable_remove(l,d,(int(*)(TBX_HashTable_Content_t))SG_traceHash)
#define HASH_isTraceInList(l,d) TBX_HashTable_isInList(l,d,(int(*)(TBX_HashTable_Content_t))SG_traceHash)
#define HASH_applyToTraceList(l,f) TBX_HashTable_apply(l,(void(*)(TBX_HashTable_Content_t))f)

#endif				/* SG_MACROS_H */
